package com.siqi.hr.system.common.dao.intf;

import com.siqi.hr.common.entity.ExportEntity;
import com.siqi.hr.system.organization.entity.Employee;

import java.util.List;
import java.util.Map;

/**
 * 通用导出dao持久层接口
 * @author     xiaogq
 * @date       2017-01-05
 */
public interface ExportImportDao {

    /**
     * 导出通用方法
     * @author                   xiaogq
     * @param exportEntity       导出数据对象
     * @param emp                当前登录用户信息对象
     */
    public Map<String, Object> entityExport(ExportEntity exportEntity, Employee emp);

    /**
     * 每个引用字段一次性查询Excel文件中的引用字段的名称对应的id
     * @author             xiaogq
     * @param listDatas    excel文件中读取的数据集合
     * @param fieldMap     引用字信息
     */
    public Map<String, List<Map<String, Object>>> queryQutoFieldId(List<Map<String, Object>> listDatas, List<Map<String, String>> fieldMap);

    /**
     * 查询员工表所有的登录名
     * @author            xiaogq
     * @param entityId    实体id
     * @return
     */
    public List<String> getEmpLoginNames(String entityId);

    /**
     * 导入实体数据是验证取值唯一的字段是否重复
     * @author             xiaogq
     * @param entityId     实体id
     * @param fieldName    字段名称
     * @param fieldValue   字段值
     * @return
     */
    public boolean fieldIsUnique(String entityId, String fieldName, String fieldValue);

    /**
     * 导入实体数据批量保存数据方法
     * @author                 xiaogq
     * @param succesDatas      验证通过的要保存数据
     * @param fieldMap         实体字段信息
     * @param entityId         实体id
     * @param emp              当前登录系统用户信息
     */
    public void batchAddImportDate(List<Map<String,Object>> succesDatas,List<Map<String,String>> fieldMap,String entityId,Employee emp);

    /**
     * 导入实体数据时根据实体id获取实体创建人创建时间字段信息
     * @author           xiaogq
     * @param entityId   实体id
     * @return
     */
    public List<String> getFieldNameByEntityId(String entityId);

}
